 
import { defineConfig } from 'eslint/config'
import globals from 'globals'
import js from '@eslint/js'
import tseslint from 'typescript-eslint'
import pluginVue from 'eslint-plugin-vue'
import pluginPrettier from 'eslint-plugin-prettier'

export default defineConfig([
  { files: ['**/*.{js,mjs,cjs,ts,vue}'] },
  {
    files: ['**/*.{js,mjs,cjs,ts,vue}'],
    languageOptions: { globals: globals.browser }
  },
  {
    files: ['**/*.{js,mjs,cjs,ts,vue}'],
    plugins: { js },
    extends: ['js/recommended']
  },
  tseslint.configs.recommended,
  pluginVue.configs['flat/essential'],
  {
    files: ['**/*.vue'],
    languageOptions: { parserOptions: { parser: tseslint.parser } }
  },
  // 自定义配置
  {
    files: ['**/*.{js,mjs,cjs,ts,vue}'],
    plugins: {
      prettier: pluginPrettier
    },
    extends: [
      // 避免eslint,prettier冲突 优先级置于最后
      // 'prettier/recommended'
      // "prettier/recommended",
      // "plugin:vue/vue3-essential", // Vue 基础规则
      // "@uni-helper/eslint-config", // UniApp 专属规则
    ],
    languageOptions: {
      parserOptions: {
        parser: '@typescript-eslint/parser',
        // parser: 'vue-eslint-parser',
        ecmaVersion: 2025,
        sourceType: 'module',
        requireConfigFile: false
      },
      // 定义全局变量（避免 ESLint 报错）
      globals: {
        uni: 'readonly', // UniApp 全局对象
        wx: 'readonly', // 微信小程序环境
        getApp: 'readonly',
        getCurrentPages: 'readonly',
        Page: 'readonly',
        Component: 'readonly'
      }
    },
    rules: {
      // 基本规则
      indent: 'off',
      // indent: ['error', 2], // 2空格缩进
      quotes: ['error', 'single'], // 单引号
      semi: ['error', 'never'], // 无分号
      'comma-dangle': ['error', 'never'], // 项目中使用尾随逗号
      // 'comma-dangle': 'off', // 关闭项目中使用尾随逗号
      'no-undef': 'off', // 关闭未定义变量检测
      'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
      'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
      '@typescript-eslint/deprecation': 'off', // 关闭 ESLint 弃用检查

      // Vue 相关规则
      'vue/html-indent': ['error', 2],
      // 'vue/script-indent': ['error', 2],
      'vue/script-indent': ['error', 2, {
        baseIndent: 1,
        switchCase: 0,
        ignores: []
      }],
      // 'vue/style-indent': ['error', 2, { baseIndent: 1 }],
      'vue/multi-word-component-names': 'off', // 允许单文件组件名

      // UniApp 特定规则（如果有需要）
      // "uni/global-require": "error",

      // TypeScript 特定规则（如果有需要）
      '@typescript-eslint/no-unused-vars': 'error',
      '@typescript-eslint/explicit-function-return-type': 'off'
    },
    ignores: [
      'node_modules',
      'dist',
      '.gitignore',
      'package.json',
      'package-lock.json',
      '**/*.d.ts'
    ]
  }
])
